package com.cskaoyan.javase.io._2char._0introduction;

import java.io.IOException;

/**
 * 编码和解码的方法在执行操作时,都可以指定编码集
 *
 * 编码:
 * String类的成员方法
 * getBytes(),无参情况下,表示使用默认的编码集进行编码
 *      在IDEA当中默认的编码集是UTF-8
 * getBytes("编码集")  获取指定编码集的字符串二进制编码表示
 *
 * 解码:
 * String类的构造器
 * String(byte数组),没有指定编码集的情况下,默认使用"UTF-8"编码集
 * String(byte数组, “编码集”) 将二进制编码表示的字符串按照指定的编码集解码
 *
 * @since 10:18
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) throws IOException {
        String str = "我们是中国人";
        // 使用GBK编码字符串
        byte[] gbkBytes = str.getBytes("GBK");
        // 使用GBK编码字符串再使用UTF-8解码
        String gbk2Utf8 = new String(gbkBytes, "UTF-8");
        System.out.println(gbk2Utf8);
        // 使用GBK编码字符串再使用GBK解码
        String gbk2Gbk = new String(gbkBytes, "GBK");
        System.out.println("gbkToGbk = " + gbk2Gbk);
        // 使用GBK编码,用UTF-8解码,再用UTF-8编码,再用GBK解码
        byte[] gbk2Utf8Bytes = gbk2Utf8.getBytes("UTF-8");
        String gbk2Utf8ToGbk = new String(gbk2Utf8Bytes, "GBK");
        System.out.println(gbk2Utf8ToGbk);
    }
}
